package day07.bean;

/**
 * <>
 * <treeSet要求存放的对象所属的类必须实现Comparable接口，
 * 该接口提供了比较元素的compareTo()方法，当插入元素时会回调该方法比较元素的大小。
 * TreeMap要求存放的键值对映射的键必须实现Comparable接口从而根据键对元素进行排序。
 * Collections工具类的sort方法有两种重载的形式，第一种要求传入的待排序容器中存放
 * 的对象比较实现Comparable接口以实现元素的比较；第二种不强制性的要求容器中的元素必须可比较，
 * 但是要求传入第二个参数，参数是Comparator接口的子类型（需要重写compare方法实现元素的比较），
 * 相当于一个临时定义的排序规则，其实就是通过接口注入比较元素大小的算法，也是对回调模式的应用
 * (Java中对函数式编程的支持）。 >
 *
 * @Author WANG.SONG.
 * @Date 2019/3/1 0001 22:44
 * @see
 */
public class Moon implements Comparable{

    private int x;

    private String y;

    public Moon(int x ,String y){
        this.x = x;

        this.y = y;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public String getY() {
        return y;
    }

    public void setY(String y) {
        this.y = y;
    }

    @Override
    public int compareTo(Object o) {
        Moon moon = (Moon)o;
        int num = this.getY().compareTo(moon.getY());
        return num == 0 ? num: new Integer(this.getX()).compareTo(new Integer(moon.getX()));
    }
}
